package com.engine4cloud.tdf.supervision.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.engine4cloud.tdf.common.core.constant.enums.InvAuditActionStatusEnum;
import com.engine4cloud.tdf.common.data.web.response.PageInfo;
import com.engine4cloud.tdf.common.data.web.response.Params;
import com.engine4cloud.tdf.supervision.dto.DcpgEvaluateDTO;
import com.engine4cloud.tdf.supervision.dto.IdentityUniqueCheckDTO;
import com.engine4cloud.tdf.supervision.dto.create.DcpgInvestigationCreateDTO;
import com.engine4cloud.tdf.supervision.dto.query.DcpgInvestigationQueryDTO;
import com.engine4cloud.tdf.supervision.dto.result.DcpgInvestigationResultDTO;
import com.engine4cloud.tdf.supervision.dto.update.DcpgAuditDepartUpdateDTO;
import com.engine4cloud.tdf.supervision.dto.update.DcpgInvestigationUpdateDTO;
import com.engine4cloud.tdf.supervision.dto.update.DcpgPreActionUpdateDTO;
import com.engine4cloud.tdf.supervision.entity.DcpgInvestigationEntity;

public interface DcpgInvestigationService extends IService<DcpgInvestigationEntity> {

    PageInfo<DcpgInvestigationResultDTO> pageList(DcpgInvestigationQueryDTO dto);

    DcpgInvestigationResultDTO getById(Long id);

    /**
     * 根据调查评估编码获取调查评估信息
     *
     * @param code 调查评估编码
     * @return DcpgInvestigationResultVO
     */
    DcpgInvestigationResultDTO getByCode(String code);

    Boolean create(DcpgInvestigationCreateDTO dto);

    Boolean update(DcpgInvestigationUpdateDTO dto);

    Boolean evaluate(DcpgEvaluateDTO dto);

    void changeAction(DcpgPreActionUpdateDTO dto);

    /**
     * 转移部门
     *
     * @param dto          调查单位dto
     * @param actionStatus 审批动作状态
     * @return Boolean
     */
    Boolean changeDepart(DcpgAuditDepartUpdateDTO dto, InvAuditActionStatusEnum actionStatus);

    /**
     * 证件号是否唯一
     *
     * @param dto dto
     * @return Boolean
     */
    Boolean checkUniqueByIdentity(IdentityUniqueCheckDTO dto);
}